Logseq Vim Shortcuts 插件发布
· 阅读需 15 分钟
图片与正文无关
这个插件提供了一些快捷键,让 Logseq 有了类似 VIM 的操作体验。
支持的快捷键
j
:移动到下一行。在可视块模式下,用于向下选择。k
:移动到上一行。在可视块模式下,用于向上选择。h
:将焦点移至父级。l
:将焦点移至子级。J
:移动到下一个兄弟节点。在可视块模式下,用于向下移动。K
:移动到上一个兄弟节点。在可视块模式下,用于向上移动。H
:减少缩进。L
:增加缩进。a
和A
:将光标移至行尾并进入编辑模式。i
和I
:将光标移至行首并进入编辑模式。yy
:复制当前块的内容。仅支持一个块——复制多个块请使用cmd+c
。Y
:复制当前块的引用。p
:将剪贴板内容粘贴到下一个兄弟节点。仅支持一个块——粘贴多个块请使用cmd+v
。P
:将剪贴板内容粘贴到上一个兄弟节点。仅支持一个块——粘贴多个块请使用cmd+v
。o
:在下一个兄弟节点插入一个空块。O
:在上一个兄弟节点插入一个空块。dd
:删除当前块。子块也会被删除,但只有当前块的内容会出现在剪贴板中。dj
:删除当前块和下一个块。子块也会被删除,但只有当前块的内容会出现在剪贴板中。dk
:删除当前块和上一个块。子块也会被删除,但只有当前块的内容会出现在剪贴板中。T
:滚动到顶部,因为 Logseq 使用gg
跳转到图视图。G
:滚动到底部。u
:撤销。ctrl+r
:重做。gu
:将块内容转换为小写。gU
:将块内容转换为大写。mod+shift+u
:在小写和大写之间切换块内容。NUMBER
+mod+shift+u
:触发不同的大小写风格,支持 1–16。zo
:展开块。zc
:折叠块。zO
:分层展开块。zC
:分层折叠块。NUMBER
+m
:将当前页面或块保存到NUMBER
寄存器。NUMBER
+'
:在主区域加载保存的标记。NUMBER
+mod+'
:在右侧边栏加载保存的标记。cmd+j cmd+j
:退出编辑模式。ctrl+[
也有相同的效果。mod+alt+j
:合并下一个兄弟块。mod+shift+enter
:跳转到内部页面或标签。mod+shift+;
和mod+alt+;
:触发命令模式。这提供了许多方便使用的命令,具体如下所述。ctrl+a
:增加块中第一个出现的数字。支持多选和组合操作。ctrl+x
:减少块中第一个出现的数字。支持多选和组合操作。x
:剪切开头的字符。支持多选。X
:剪切开头的单词。支持多选。/
:在下方的页面栏中触发搜索。支持智能大小写匹配。n
:搜索下一个匹配项。N
:搜索上一个匹配项。sb
:在百度中搜索块内容。se
:在维基百科中搜索块内容。sg
:在谷歌中搜索块内容。sh
:在 GitHub 中搜索块内容。ss
:在 Stackoverflow 中搜索块内容。sy
:在 Youtube 中搜索块内容。ctrl+v
:切换可视块模式。mod+/
:触发表情符号选择界面。
模式
普通模式
一个块被聚焦/高亮。
插入模式
你可以编辑一个块。
可视块模式
你可以向上和向下选择更多块,并使用 j
和 k
移动选中的块。
命令模式
在 VIM 中,这个模式可以通过 :
触发,但在这里,快捷键是 mod+shift+;
,也可以记作 mod+:
。触发后,你可以在底部找到一个输入区域,就像在 VIM 中一样输入一些命令。目前大约有 10 多个命令,但相信未来会有更多。
注意:在 Windows 上,触发键是 ctrl+alt+;
。
底部输入框功能
- 输入时提供自动建议。
- 如果只有一个命令匹配,按下
Tab
将立即自动完成匹配的命令。 - 按下
Up
和Down
浏览命令历史记录,这是一个限制为 1000 条的历史记录,我认为这已经足够使用了。 - 按下
Esc
关闭命令模式并返回主窗口。目前 Logseq 有时无法自动获取焦点,因此你需要点击主窗口以继续操作。 - 如果遇到卡顿,右下角的
Run
按钮和Close
按钮可以帮助你触发操作。
支持的命令
:NUMBER
:滚动到特定行,或者:-NUMBER
滚动到页面末尾的特定行,或者:.NUMBER
表示滚动到页面的 NUMBER * 100% 处。:s/
和:substitute/
:根据正则表达式替换当前块的内容,例如s/foo/bar/gi
,注意它支持正则修饰符。:%s/
和:%substitute/
:根据正则表达式替换当前页面的块,例如%s/foo/bar/gi
。:marks
:显示标记。:delm
和:delmarks
:删除特定的标记 ID,例如:delm 1 2 3
。:delm!
和:delmarks!
:删除所有标记。:m
和:mark
:跳转到特定的标记,例如:m 1
。:go
:跳转到已存在的页面或块,例如:go 2022-02-22
或:go ((6219c981-256a-4464-bc62-4ecfab4c2141))
。- 页面名称有一些快捷方式:
:go @
和:go @index
:跳转到目录页面。:go @today
:跳转到今天的日志页面。:go @yesterday
:跳转到昨天的日志页面。:go @tomorrow
:跳转到明天的日志页面。:go @prev
:跳转到前一天的日志页面,如果当前页面不是日志页面,则回退到 @yesterday。:go @next
:跳转到下一天的日志页面,如果当前页面不是日志页面,则回退到 @tomorrow。:go @back
:跳转到后退页面。:go @forward
:跳转到前进页面。
:go!
:跳转到已存在的页面或块,如果页面不存在则创建一个,例如:go 2022-02-22
或:go ((6219c981-256a-4464-bc62-4ecfab4c2141))
。:go!
和:go
支持--ns
和--namespace
,用于跳转或创建命名空间页面。例如,你在test
页面上运行命令:go! subpage --ns
,则会被重定向到test/subpage
,从而节省输入前缀字符的时间。
- 页面名称有一些快捷方式:
:re
和:rename
:重命名当前页面名称,如果目标页面存在,则合并页面内容。:undo
和:redo
:撤销和重做最后一次编辑。:lorem
和:lorem-ipsum
:在相同层级生成随机块,使用--unit word|paragraph|sentence
改变随机块的单位。--unit
有一个简写形式-u
。word
、paragraph
和sentence
也有简写形式w
、p
和s
。- 同时支持
-p
、-s
、-w
和--paragraph
、--sentence
、--word
。
:emoji
:通过搜索关键词插入表情符号,你可以在后面追加数字来重复表情符号。:emoji-picker
:通过表情符号界面插入表情符号。:sort
和rsort
:在不聚焦任何块的情况下对页面的第一层级块进行排序,或者在聚焦一个块的情况下对子层级块进行排序。:bg [namedColor|hexColor]
:设置块的背景颜色,支持多块选择。:bg-picker
:触发颜色选择器来选择块的背景颜色,支持多块选择。:bg-random
:随机设置块的背景颜色,支持多块选择。:bg-clear
:清除块的背景颜色,支持多块选择。:copy-path
:获取页面或日志的绝对路径,以便在 Logseq 之外进行编辑。:open-in-vscode
:在 VSCode 中打开页面或日志。:w
和:write
:保存当前页面,实际上这是一个假操作,因为 Logseq 会自动保存。:wq
:保存当前页面并退出 VIM 命令模式。:q
和:quit
:退出 VIM 命令模式。h
和help
:显示帮助信息弹窗。
大小写转换风格
1
:在大写和小写之间切换,这是默认行为。2
:转换为大写。例如LOGSEQ IS SO AWESOME
。3
:转换为小写。例如logseq is so awesome
。4
:转换为标题大小写。例如Logseq Is so Awesome
。5
:转换为句子大小写。例如Logseq is so awesome
。6
:转换为路径大小写。例如logseq/is/so/awesome
。7
:转换为大写首字母。例如Logseq Is So Awesome
。8
:转换为常量大小写。例如LOGSEQ_IS_SO_AWESOME
。9
:转换为点分大小写。例如logseq.is.so.awesome
。10
:转换为标题大小写。例如Logseq-Is-So-Awesome
。11
:转换为参数大小写。例如logseq-is-so-awesome
。12
:转换为帕斯卡大小写。例如LogseqIsSoAwesome
。13
:转换为驼峰大小写。例如logseqIsSoAwesome
。14
:转换为蛇形大小写。例如logseq_is_so_awesome
。15
:转换为交换大小写。例如lOGSEQ IS SO AWESOME
。16
:转换为随机大小写。例如logsEQ IS SO awESoME
。
标记功能说明
- Logseq 已经有
Favorites
和Recent
功能,我们还有一个Tabs
插件,标记功能有点像 Tabs 的位置,但它让你自己决定哪个是哪个,这让我感觉很好。 - 标记的页面和块可以自动持久化并单独保存。
- NUMBER 可以大于 10,实际上如果你愿意,可以是数千。
m
快捷键可能会与Markmap
插件冲突,所以如果你遇到这个问题,请将Markmap
插件升级到最新版本。- NUMBER=1 是默认值,所以你可以直接按下
m
来保存,按下'
来加载标记 1。
本插件新增的斜杠命令
由于一些 VIM 快捷键或命令也需要作为斜杠命令使用,因此本插件提供了一些。
/Insert Emoji
:在当前位置插入表情符号。/Sort Blocks
:对子层级的子块按 a 到 z 排序。/Reverse Sort Blocks
:对子层级的子块按 z 到 a 排序。/Random Bg Color
:设置块的背景颜色。/Children Random Bg Color
:设置子块的背景颜色。
命名背景颜色
在 :bg
命令中可以使用的命名颜色来自 这里。
页面内搜索
与 VIM 类似,按下 /
可以触发页面内搜索,它支持智能大小写匹配,这意味着如果你用小写搜索,它将不区分大小写匹配;如果你搜索的关键词包含大写字母,它将区分大小写匹配。
其他说明
- Logseq 的快捷键支持未来可能会发生变化,所以如果你需要,先用一段时间,它可能会与 Logseq 将来的快捷键冲突。
- 这些快捷键并不完全与 VIM 的快捷键相同,只是模仿。
- 如果你在日志主页上,一些快捷键会将你重定向到特定页面,因为目前没有 API 可以停留在日志主页并移动块的高亮行。
- 目前有些快捷键还不够完美,可能需要进一步改进,并且需要 Logseq 团队的一些支持。
- 可能很快会有更多快捷键推出。
- 敬请期待。
- 这里的复制并不意味着复制到系统剪贴板,只是在 Logseq 的内存中。
- VIM 滚动到顶部的快捷键是
gg
,如果你需要,你可以将 Logseq 的 gg 快捷键改为另一个,并在插件设置的 JSON 文件中设置 gg。 - 一些快捷键支持类似 VIM 的组合操作,这意味着按下
N+action
可以执行N
次操作。 - 合并快捷键只能合并没有子块的兄弟块,并且在编辑模式下不应触发得太快。
- 跳转到内部页面支持组合操作来选择要跳转的页面。
- 所有操作都支持在设置 JSON 文件中进行多重键盘绑定。
mod
在 Mac 上表示Cmd
,在 Windows/Linux 上表示Ctrl
。
如果你对这个插件感兴趣,可以去 Logseq 插件市场搜索使用。